package com.power.project.service;

import cn.hutool.core.lang.tree.Tree;
import com.power.project.model.Ww_depart;
import com.power.project.model.Ww_depart_user;
import com.power.project.model.Ww_user;
import com.power.project.model.bo.DepartLeaderSetBO;
import com.power.project.model.bo.DepartSaveuserBO;
import com.power.project.model.bo.DepartmentSaveBO;
import com.power.project.model.bo.DepartmentSortBO;
import com.power.project.model.vo.DepartLeaderForSetVO;
import com.power.project.model.vo.feignvo.Depart;

import java.util.List;

/**
 * 企业微信部门信息业务层
 */
public interface Ww_departService {

    /**
     * 根据id删除企业微信部门信息
     */
    void removeById(String departId);

    void save(DepartmentSaveBO saveBO);

    /**
     * 根据当前登录人的租户id，查询部门列表
     *
     * @param tenantId 不能为空
     * @return 树形结构返回
     */
    List<Tree<String>> tree(String tenantId);

    /**
     * 根据当前登录人的租户id，查询部门人员列表
     *
     * @param tenantId 不能为空
     * @return 树形结构返回
     */
    List<Tree<String>> departUserTree(String tenantId);

    void rename(DepartmentSaveBO saveBO);

    void sort(DepartmentSortBO sortBO);

    List<DepartLeaderForSetVO> leaderList(String departId);

    void setLeader(DepartLeaderSetBO setBO);

    void saveUsers(DepartSaveuserBO saveuserBO);

    List<Ww_user> queryUsers(String departId);


    List<Ww_depart> getLeadDepartment(String userId, String tenantId);

    void resetLeaders(List<String> departIds, String tenantId);

    Ww_depart getByDepartId(String departId);

    List<Ww_depart>  getByParentId(String parentId);

    //region 企业微信接口适配
    List<Depart> queryAllDepartWechat(String tenantId);
    //endregion
}
